// 构建情景项树形结构
const sceneTree = [
  {
    name: '资产损失',
    id: 1,
    children: [
      {
        name: '市场风险损失',
        id: 11,
        children: [
          {
            name: '债券指数下跌假设下的债券资产损失',
            id: 'curveLoss',
          },
          {
            name: '金融机构证券投资类产品损失',
            id: 'ratioLoss',
          },
        ],
      },
      {
        name: '信用风险损失',
        id: 12,
        children: [
          {
            name: '违约损失',
            id: 'defaultLoss',
          },
        ],
      },
    ],
  },
  {
    name: '资负分析',
    id: 2,
    children: [
      {
        name: '下一个开放期赎回规模',
        id: 'redemption',
      },
      {
        name: '下一个开放期前可变现资产规模',
        id: 'realizable',
      },
      {
        name: '可变现资产满足赎回比例',
        id: 'liquidityRatio',
      },
    ],
  },
  {
    name: '产品测算',
    id: 3,
    children: [
      {
        name: '净值规模下跌',
        id: 'portfolioLoss',
      },
      {
        name: '净值下跌幅度',
        id: 'portfolioLossRatio',
      },
      {
        name: '压力测试单位净值',
        id: 'portfolioUnitLoss',
      },
      {
        name: '杠杆率',
        id: 'leverageRatio',
      },
      {
        name: '影子偏离总额',
        id: 'shadowPrice',
      },
      {
        name: '影子价格偏离度（按债券收益率测算）',
        id: 'shadowRatio',
      },
      {
        name: '影子价格偏离度（按净赎回率测算）',
        id: 'shadowRedeRatio',
      },
    ],
  },
];

// 情景项 - 风险因子
const sceneToRisk = [
  {
    sceneId: 'curveLoss', // 债券指数下跌假设下的债券资产损失
    riskFactor: [
      {
        id: 'bondCurve',
        name: '债券收益率曲线上移幅度',
        path: '资产端-市场风险因子',
        remark: '支持按资产类型、信用评级、债券类别、投资分类进行设置。仅当资产类型为债券时，债券类别、信用评级和投资分类可以进行设置',
      },
      { id: 'default', name: '资产违约率', path: '资产端-信用风险因子', remark: '支持按不同的违约支持类型进行设置，仅当债券类型支持信用评级、 债券类别和投资类别进行设置' },
    ],
  },
  {
    sceneId: 'ratioLoss', // 金融机构证券投资类产品损失
    riskFactor: [{ id: 'lossRatio', name: '金融机构证券投资类产品损失比例', path: '资产端-市场风险因子', remark: '支持按资产类型设置损失比例' }],
  },
  {
    sceneId: 'defaultLoss', // 违约损失
    riskFactor: [
      { id: 'default', name: '资产违约率', path: '资产端-信用风险因子', remark: '支持按不同的违约支持类型进行设置，仅当债券类型支持信用评级、 债券类别和投资类别进行设置' },
    ],
  },
  {
    sceneId: 'redemption', // 下一个开放期赎回规模
    riskFactor: [{ id: 'redemptionLevel', name: '下一个开放期赎回比例', path: '负债端-投资者赎回比例' }],
  },
  {
    sceneId: 'realizable', // 下一个开放期前可变现资产规模
    riskFactor: [{ id: 'dailyTurnover', name: '日均成交额下跌幅度（股票）', path: '资产端-流动性风险因子' }],
  },
  {
    sceneId: 'liquidityRatio', // 可变现资产满足赎回比例
    riskFactor: [
      { id: 'redemptionLevel', name: '下一个开放期赎回比例', path: '负债端-投资者赎回比例' },
      { id: 'dailyTurnover', name: '日均成交额下跌幅度（股票）', path: '资产端-流动性风险因子' },
    ],
  },
  {
    sceneId: 'portfolioLoss', // 净值规模下跌
    riskFactor: [
      { id: 'SHCI', name: '上证综指', path: '资产端-市场风险因子' },
      { id: 'SZSE', name: '深证成指', path: '资产端-市场风险因子' },
      { id: 'SME', name: '中小板指', path: '资产端-市场风险因子' },
      { id: 'GEM', name: '创业板综指', path: '资产端-市场风险因子' },
      { id: 'NOM', name: '三板成指', path: '资产端-市场风险因子' },
      { id: 'Oversea', name: '香港、美国等境外交易所综合指数', path: '资产端-市场风险因子' },
      { id: 'WindA', name: '万得全A指数', path: '资产端-市场风险因子' },
      { id: 'default', name: '资产违约率', path: '资产端-信用风险因子', remark: '支持按不同的违约支持类型进行设置，仅当债券类型支持信用评级、 债券类别和投资类别进行设置' },
      {
        id: 'bondCurve',
        name: '债券收益率曲线上移幅度',
        path: '资产端-市场风险因子',
        remark: '支持按资产类型、信用评级、债券类别、投资分类进行设置。仅当资产类型为债券时，债券类别、信用评级和投资分类可以进行设置',
      },
      { id: 'lossRatio', name: '金融机构证券投资类产品损失比例', path: '资产端-市场风险因子', remark: '支持按资产类型设置损失比例' },
    ],
  },
  {
    sceneId: 'portfolioLossRatio', // 净值下跌幅度
    riskFactor: [
      { id: 'SHCI', name: '上证综指', path: '资产端-市场风险因子' },
      { id: 'SZSE', name: '深证成指', path: '资产端-市场风险因子' },
      { id: 'SME', name: '中小板指', path: '资产端-市场风险因子' },
      { id: 'GEM', name: '创业板综指', path: '资产端-市场风险因子' },
      { id: 'NOM', name: '三板成指', path: '资产端-市场风险因子' },
      { id: 'Oversea', name: '香港、美国等境外交易所综合指数', path: '资产端-市场风险因子' },
      { id: 'WindA', name: '万得全A指数', path: '资产端-市场风险因子' },
      { id: 'default', name: '资产违约率', path: '资产端-信用风险因子', remark: '支持按不同的违约支持类型进行设置，仅当债券类型支持信用评级、 债券类别和投资类别进行设置' },
      {
        id: 'bondCurve',
        name: '债券收益率曲线上移幅度',
        path: '资产端-市场风险因子',
        remark: '支持按资产类型、信用评级、债券类别、投资分类进行设置。仅当资产类型为债券时，债券类别、信用评级和投资分类可以进行设置',
      },
      { id: 'lossRatio', name: '金融机构证券投资类产品损失比例', path: '资产端-市场风险因子', remark: '支持按资产类型设置损失比例' },
    ],
  },
  {
    sceneId: 'portfolioUnitLoss', // 压力测试单位净值
    riskFactor: [
      { id: 'SHCI', name: '上证综指', path: '资产端-市场风险因子' },
      { id: 'SZSE', name: '深证成指', path: '资产端-市场风险因子' },
      { id: 'SME', name: '中小板指', path: '资产端-市场风险因子' },
      { id: 'GEM', name: '创业板综指', path: '资产端-市场风险因子' },
      { id: 'NOM', name: '三板成指', path: '资产端-市场风险因子' },
      { id: 'Oversea', name: '香港、美国等境外交易所综合指数', path: '资产端-市场风险因子' },
      { id: 'WindA', name: '万得全A指数', path: '资产端-市场风险因子' },
      { id: 'default', name: '资产违约率', path: '资产端-信用风险因子', remark: '支持按不同的违约支持类型进行设置，仅当债券类型支持信用评级、 债券类别和投资类别进行设置' },
      {
        id: 'bondCurve',
        name: '债券收益率曲线上移幅度',
        path: '资产端-市场风险因子',
        remark: '支持按资产类型、信用评级、债券类别、投资分类进行设置。仅当资产类型为债券时，债券类别、信用评级和投资分类可以进行设置',
      },
      { id: 'lossRatio', name: '金融机构证券投资类产品损失比例', path: '资产端-市场风险因子', remark: '支持按资产类型设置损失比例' },
    ],
  },
  {
    sceneId: 'leverageRatio', // 杠杆率
    riskFactor: [{ id: 'redemptionLevel', name: '下一个开放期赎回比例', path: '负债端-投资者赎回比例' }],
  },
  {
    sceneId: 'shadowPrice', // 影子偏离总额
    riskFactor: [
      {
        id: 'bondCurve',
        name: '债券收益率曲线上移幅度',
        path: '资产端-市场风险因子',
        remark: '支持按资产类型、信用评级、债券类别、投资分类进行设置。仅当资产类型为债券时，债券类别、信用评级和投资分类可以进行设置',
      },
    ],
  },
  {
    sceneId: 'shadowRatio', // 影子价格偏离度（按债券收益率测算）
    riskFactor: [
      {
        id: 'bondCurve',
        name: '债券收益率曲线上移幅度',
        path: '资产端-市场风险因子',
        remark: '支持按资产类型、信用评级、债券类别、投资分类进行设置。仅当资产类型为债券时，债券类别、信用评级和投资分类可以进行设置',
      },
    ],
  },
  {
    sceneId: 'shadowRedeRatio', // 影子价格偏离度（按净赎回率测算）
    riskFactor: [{ id: 'redemptionRatio', name: '下一个开放期净赎回率', path: '负债端-净赎回率' }],
  },
];

// 风险因子 - 情景项
const riskToScene = [
  {
    riskId: 'SHCI', // 上证综指
    scene: [
      { id: 'portfolioLoss', path: '产品测算-净值规模下跌' },
      { id: 'portfolioLossRatio', path: '产品测试-净值下跌幅度' },
      { id: 'portfolioUnitLoss', path: '产品测算-压力测试单位净值' },
    ],
  },
  {
    riskId: 'SZSE', // 深证成指
    scene: [
      { id: 'portfolioLoss', path: '产品测算-净值规模下跌' },
      { id: 'portfolioLossRatio', path: '产品测试-净值下跌幅度' },
      { id: 'portfolioUnitLoss', path: '产品测算-压力测试单位净值' },
    ],
  },
  {
    riskId: 'SME', // 中小板指
    scene: [
      { id: 'portfolioLoss', path: '产品测算-净值规模下跌' },
      { id: 'portfolioLossRatio', path: '产品测试-净值下跌幅度' },
      { id: 'portfolioUnitLoss', path: '产品测算-压力测试单位净值' },
    ],
  },
  {
    riskId: 'GEM', // 创业板综指
    scene: [
      { id: 'portfolioLoss', path: '产品测算-净值规模下跌' },
      { id: 'portfolioLossRatio', path: '产品测试-净值下跌幅度' },
      { id: 'portfolioUnitLoss', path: '产品测算-压力测试单位净值' },
    ],
  },
  {
    riskId: 'NOM', // 三板成指
    scene: [
      { id: 'portfolioLoss', path: '产品测算-净值规模下跌' },
      { id: 'portfolioLossRatio', path: '产品测试-净值下跌幅度' },
      { id: 'portfolioUnitLoss', path: '产品测算-压力测试单位净值' },
    ],
  },
  {
    riskId: 'Oversea', // 香港、美国等境外交易所综合指数
    scene: [
      { id: 'portfolioLoss', path: '产品测算-净值规模下跌' },
      { id: 'portfolioLossRatio', path: '产品测试-净值下跌幅度' },
      { id: 'portfolioUnitLoss', path: '产品测算-压力测试单位净值' },
    ],
  },
  {
    riskId: 'WindA', // 万得全A指数
    scene: [
      { id: 'portfolioLoss', path: '产品测算-净值规模下跌' },
      { id: 'portfolioLossRatio', path: '产品测试-净值下跌幅度' },
      { id: 'portfolioUnitLoss', path: '产品测算-压力测试单位净值' },
    ],
  },
  {
    riskId: 'bondCurve', // 债券收益率曲线上移幅度
    attrs: ['sectype', 'bondRate', 'bondType', 'bondInvestType'], // 资产类型、债券信用评级、债券类别、债券投资分类
    scene: [
      { id: 'curveLoss', path: '资产损失-市场风险损失-债券指数下跌假设下的债券资产损失' },
      { id: 'portfolioLoss', path: '产品测算-净值规模下跌' },
      { id: 'portfolioLossRatio', path: '产品测试-净值下跌幅度' },
      { id: 'portfolioUnitLoss', path: '产品测算-压力测试单位净值' },
      { id: 'shadowPrice', path: '产品测算-影子偏离总额' },
      { id: 'shadowRatio', path: '产品测算-影子价格偏离度（按债券收益率测算）' },
    ],
  },
  {
    riskId: 'lossRatio', // 金融机构证券投资类产品损失
    attrs: ['sectype'], // 资产类型
    scene: [
      { id: 'curveLoss', path: '资产损失-市场风险损失-债券指数下跌假设下的债券资产损失' },
      { id: 'portfolioLoss', path: '产品测算-净值规模下跌' },
      { id: 'portfolioLossRatio', path: '产品测试-净值下跌幅度' },
      { id: 'portfolioUnitLoss', path: '产品测算-压力测试单位净值' },
    ],
  },
  {
    riskId: 'default', // 资产违约率
    attrs: ['sectype', 'bondRate', 'bondType', 'bondInvestType'], // 资产类型、债券信用评级、债券类别、债券投资分类
    scene: [
      { id: 'curveLoss', path: '资产损失-市场风险损失-债券指数下跌假设下的债券资产损失' },
      { id: 'defaultLoss', path: '资产损失-信用风险损失-违约损失' },
      { id: 'portfolioLoss', path: '产品测算-净值规模下跌' },
      { id: 'portfolioLossRatio', path: '产品测试-净值下跌幅度' },
      { id: 'portfolioUnitLoss', path: '产品测算-压力测试单位净值' },
    ],
  },
  {
    riskId: 'dailyTurnover', // 日均成交额下跌幅度（股票）(无attrs)
    scene: [
      { id: 'realizable', path: '资负分析-下一个开放期前可变现资产规模' },
      { id: 'liquidityRatio', path: '资负分析-可变现资产满足赎回比例' },
    ],
  },
  {
    riskId: 'redemptionLevel', // 下一个开放期赎回比例(无attrs)
    scene: [
      { id: 'redemption', path: '资负分析-下一个开放期赎回规模' },
      { id: 'liquidityRatio', path: '资负分析-可变现资产满足赎回比例' },
      { id: 'leverageRatio', path: '产品测算-杠杆率' },
    ],
  },
  {
    riskId: 'redemptionRatio', // 下一个开放期净赎回率(无attrs)
    scene: [{ id: 'shadowRedeRatio', path: '产品测算-影子价格偏离度（按净赎回率测算）' }],
  },
];

// 接口格式
const args = {
  sceneName: '情景模板名称',
  des: '情景模板描述',
  correlation: 0, // 不考虑相关性（默认）
  pressMethod: 1, // 基于自定义（默认）
  sceneList: [], // 需要进行压测的情景ID
  riskNum: 3, // 因子变动数量
  priceMethod: 1, // 近似估值法（默认）
  copySceneConfig: undefined, // 复制的情景id
  riskFactor: [
    {
      id: 'default', // 风险因子ID-信用风险因子
      // priceMothod: 1, // 近似估值法（默认）
      setting: {
        // 头部信息，区分维度和值两部分
        header: { dimension: ['sectype', 'bondRate', 'bondType', 'bondInvestType'], threshold: ['risk1', 'risk2', 'risk3'] },
        // 数据信息
        body: [
          // 第一条数据
          [
            { key: 'sectype', value: 'BOND', tag: false }, // 资产类型：债券，不是组标签
            { key: 'bondRate', value: '11', tag: true }, // 信用评级：11，是组标签
            { key: 'bondType', value: '1', tag: false }, // 债券类别：1，不是组标签
            { key: 'bondInvestType', value: undefined, tag: false }, // 投资分类：没定义
            { key: 'risk1', value: 0.18 }, // 第一个值
            { key: 'risk2', value: 0.25 }, // 第二个值
            { key: 'risk3', value: 0.35 }, // 第三个值
          ],
          // 第二条数据
          [
            { key: 'sectype', value: 'BOND', tag: false }, // 资产类型：债券，不是组标签
            { key: 'bondRate', value: '11', tag: true }, // 信用评级：11，是组标签
            { key: 'bondType', value: '1', tag: false }, // 债券类别：1，不是组标签
            { key: 'bondInvestType', value: undefined, tag: false }, // 投资分类：没定义
            { key: 'risk1', value: 0.18 }, // 第一个值
            { key: 'risk2', value: 0.25 }, // 第二个值
            { key: 'risk3', value: 0.35 }, // 第三个值
          ],
        ],
      },
    },
    {
      id: 'SHCI', // 风险因子ID-上证综指
      setting: {
        // 头部信息，区分维度和值两部分
        header: { dimension: [], threshold: ['risk1', 'risk2', 'risk3'] },
        // 数据信息
        body: [
          [
            { key: 'risk1', value: 0.18 }, // 第一个值
            { key: 'risk2', value: 0.25 }, // 第二个值
            { key: 'risk3', value: 0.35 }, // 第三个值
          ],
        ],
      },
    },
  ],
};
const priceMethodList = [
  {
    value: '1',
    title: '监管体系',
  },
];
export { sceneTree, sceneToRisk, riskToScene, priceMethodList };
